#ifndef _CSILNIK_
#define _CSILNIK_

#include "c_Render.h"
#include "c_Dziennik.h"
#include "c_Okno.h"

/// class c_Silnik - Propozycja interfejsu klasy silnika. Dodam, że jest to implementacja wzorca si
class c_Silnik {
public:
  /// Okno aplikacji po prostu
  c_Okno* Okno;
  /// Render. Tu będą funkcje odpowiedzialne za rysowanie grafiki i ułatwiające o
  c_Render* Render;
  /// Jaki jest koń każdy widzi :P
  c_Dziennik* DziennikAplikacji;
  /// Jest to klasa standardowa GUIChan. Można by było ją opakować, ale byłby to
  gcn::Gui* Gui;
private:
  /// Jeden z elementów implementacji singletona
  static c_Silnik* m_Egzemplarz;
  /// Bez komentarza
  c_OdbiorcaZdarzen* m_OdbiorcaZdarzen;
  // Operations
public:
  /// Zwraca egzemplarz klasy. Zawsze ten sam bo to singleton
  static c_Silnik* Egzemplarz ();
  void Inicjalizuj ();
  void Zakoncz ();
  void UstawOdbiorceZdarzen (c_OdbiorcaZdarzen* p_OdbiorcaZdarzen);
private:
  /// Konstruktor. Prywatny bo to singleton
	c_Silnik () {}
  /// Konstruktor kopiujący. Oczywiście też prywatny
  c_Silnik (&c_Silnik);
  /// Jest i prywatny destruktor :P
  ~c_Silnik () {}
};

#endif